#include "RelationBinaire.hpp"

RelationBinaire::RelationBinaire ( Expression* opGauche, char type, Expression* opDroit )
{
  typeRelation = type;
  _opGauche=opGauche;
  _opDroit=opDroit;
}

RelationBinaire::~RelationBinaire ()
{
  delete _opGauche;
  delete _opDroit;
}

void RelationBinaire::compute ()
{
  LOGFUNCTION ( IEXEC_LOG );
  _opGauche->compute();
  _opDroit->compute();
  switch(typeRelation){
  case '+':  getValue()=_opGauche->getValue()+_opDroit->getValue(); break;
  case '-':  getValue()=_opGauche->getValue()-_opDroit->getValue(); break;
  case '/':  getValue()=_opGauche->getValue()/_opDroit->getValue(); break;
  case '*':  getValue()=_opGauche->getValue()*_opDroit->getValue(); break;
  }
}

void RelationBinaire::display ( const unsigned int shift) const
{
  std::cout << "(";
  _opGauche->display();
  std::cout << typeRelation;
  _opDroit->display();
  std::cout << ")";
}
